import { useUserStore } from '@/store'

// 白名单：不需要登录的页面
const WHITELIST = [
  '/pages/index/index',
]

/**
 * 获取 navigateBack 后的目标页面路径
 * @param delta 返回的页面层级（默认1）
 * @returns 页面地址
 */
export function getBackedPage(delta = 1): string {
  const pages = getCurrentPages()

  const targetIndex = pages.length - delta - 1
  const targetPage = pages[targetIndex]

  if (!targetPage) return ''
  return `/${targetPage.route}`
}

/**
 * 添加路由拦截器
 */
export function addRouterIntercept() {
  // 拦截 navigateTo
  uni.addInterceptor('navigateTo', {
    invoke(e) {
      return checkLogin(e.url)
    }
  })
  // 拦截 navigateBack
  uni.addInterceptor('navigateBack', {
    invoke(e) {
      const url = getBackedPage(e.delta || 1)
      return checkLogin(url)
    }
  })

  // 拦截 switchTab
  /*
  uni.addInterceptor('switchTab', {
    invoke(e) {
      return checkLogin(e.url)
    }
  })
  */


  // 拦截 relaunch
  uni.addInterceptor('reLaunch', {
    invoke(e) {
      return checkLogin(e.url)
    }
  })
}

/**
 * 检查页面是否需要登录
 * @param url 页面路径
 * @returns 是
 */
function checkLogin(url: string) {
  const userStore = useUserStore()

  if (userStore.isLogin) {
    return true
  }
  if (!url) {
    return true
  }
  if (WHITELIST.includes(url.split('?')[0])) {
    return true
  }

  // 跳转登录页
  // uni.reLaunch({
  //   url: '/pages/login/login'
  // })
  uni.navigateTo({ url: '/pages/login/login' })
  return false
}
